<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>for循环</title>
    <script>
      /* 
        for循环
        for(初始化变量;条件表达式;操作表达式){
          //循环体
        }
        - 初始化变量(只运行一次)：通常被用于初始化一个计数器，该表达式可以使用 let 关键字声明新的变量，这个变量帮我们来记录次数。
        - 条件表达式(最少运行一次)：用于确定每一次循环是否能被执行。如果结果是 true 就继续循环，否则退出循环。
        - 操作表达式(可能不执行,可能执行多次)：每次循环的最后都要执行的表达式。通常被用于更新或者递增计数器变量。当然，递减变量也是可以的。
        - 循环体(可能不执行,可能执行多次): 循环反复执行的代码

        执行顺序: 
        初始化变量->条件表达式(true)->循环体->操作表达式->条件表达式(true)->循环体->操作表达式->...->条件表达式(false)->循环退出
        
        细节:
        for循环中是三个部分都是可以单独或者整体省略(;不能省略)

        1.初始话变量的位置,如果写在for内,则这个变量是局部变量只能在for的范围内使用,
        如果省略,把它写在for循环前面,则它是全局变量,可以在当前script中访问.

        2.条件表达式如果省略,则循环会可能会陷入无限循环的情况,浏览器会被卡死

        3.操作表达式如果省略,也可能造成循环陷入无限循环的情况,浏览器会被卡死

        4.三个部分全部都省略(;不能省略),则for成为彻底的死循环,
          一般,我们可以在循环体中搭配退出条件来实现正确运行.
        */
      //注意: 此时的i是局部变量,它只有在for的{}范围内才有效
      for (let i = 0; i < 10; i++) {
        document.write(i + ', 你好!<br/>')
      }
      //document.write('i的值为: ' + i)

      //死循环
      /* for(;;){

      } */

      /* let i = 0
      for (;;) {
        document.write(i + ', 你好!<br/>')
        i++
        if (i == 10) {
          break //打断
        }
      } */
    </script>
  </head>
  <body></body>
</html>
